package org.jsola.hr.service.excel;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;


import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @Author zdd
 */
public class AttendPunchNoModelDataListener extends AnalysisEventListener<Map<Integer, String>> {

    List<Map<Integer, String>> list = new ArrayList();
    //表头字段数据
    List<String> dataList = new ArrayList<>();

    public List<String> getDataList() {
        return dataList;
    }

    Map<String,Map<Double,Integer>> allFieldMap = new HashMap();

    public List<Map<Integer, String>> getList() {
        return list;
    }

    public Map<String, Map<Double, Integer>> getAllFieldMap() {
        return allFieldMap;
    }
    //列数
    int col = 0;
    int startCol = 0;
    int endCol = 0;
    int nameCol = 0;
    int startRow = 0;
    int dataCount =1;

    public int getCol() {
        return col;
    }

    public void setScanInfo(int startCol, int endCol, int nameCol, int startRow) {
        this.startCol = startCol;
        this.endCol = endCol;
        this.nameCol = nameCol;
        this.startRow = startRow;
    }


    @Override
    public void invoke(Map<Integer, String> data, AnalysisContext context) {
        if(col == 0){
            col = data.size();
            for (int i = 0; i < col; i++) {
                dataList.add(data.get(i));
            }

        }else {
            list.add(data);
        }


//        if(list.size()==0){
//            col = data.size();
//        }else {
//            //查是否存在该用户
//
//            if(data.size()==col){
//                for (int i = 0; i < data.size(); i++) {
//                    dataList.add(data.get(i));
//                }
//                JSONArray.toJSONString(dataList);
//            }
//        }

//            if (dataCount >= startRow - 1) {
//                Map<String, String> dataMap = new HashMap<>();
//                //判断扫描的列数是否小于endCol
//                if (endCol > data.size()) {
//                    new HrException("设置的结束列异常");
//                }
//                //拿到姓名列的姓名
//                String name = data.get(nameCol - 1);
//                dataMap.put("name", name);
//
//                //处理范围内的数据
//                for (int col = startCol - 1; col < endCol - 1; col += 2) {
//                    //当前列为工时，下一列为当前工种
//                    String workType = data.get(col + 1);
//                    String workDay = data.get(col);
//                    if (workDay == null) {
//                        workDay = "0";
//                    }
//                    if (!StringUtils.isEmpty(workType)) {
//                        //存放数据，key存放工种 value存放工时
//                        if (dataMap.get(workType) == null) {
//                            dataMap.put(workType, workDay);
//                        } else {
//                            dataMap.put(workType, Double.parseDouble(dataMap.get(workType)) + Double.parseDouble(workDay) + "");
//                        }
//                        //存放每行数据，key存放名字 value存放key信息map，map为工资数 和是否工资项（0为工资项1不为工资项），由前端实现
//                        allFieldMap.put(workType, new HashMap<>(1));
//                    }
//                }
//                dataMap.remove(null);
//                list.add(dataMap);
//            }
//            dataCount++;
    }




    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        allFieldMap.remove(null);
    }

}